#ifndef TITLESCREEN_H
#define TITLESCREEN_H

#include <AGTGameSystem/GameStateMgr.h>


#include "DefaultScene.h"
#include "ProtoScene.h"


class TitleScreen : public GameState
{
private:
	TitleScreen(){};


	// Temp
	Ogre::Vector3	pos;

	static TitleScreen* title_screen;
public:
	static TitleScreen* getSingleton();
	~TitleScreen(){}

	void enter();			// Function called when after changing over to a new state
	void exit();			// Function called upon calling to changed to a new state

	void pause();
	void resume();


	void update();		// Updates the states.

	// Handling presses and releases
	bool updateKey();
	bool updateMouse();
	bool updateJoy();

	// Keyboard listener functions
	bool keyPressed(const OIS::KeyEvent &evt);
	bool keyReleased(const OIS::KeyEvent &evt);


	bool frameStarted(const Ogre::FrameEvent& evt);
	bool frameEnded(const Ogre::FrameEvent& evt);


	// Mouse Listener functions
	bool mouseMoved(const OIS::MouseEvent &evt);
	bool mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID);
	bool mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID);


	// Joystick listener functions
	bool buttonPressed(const OIS::JoyStickEvent &evt, int index);
	bool buttonReleased(const OIS::JoyStickEvent &evt, int index);
	bool axisMoved(const OIS::JoyStickEvent &evt, int index);
	bool povMoved(const OIS::JoyStickEvent &evt, int index);


	//---------------- Other methods
};

#endif